From: kfraser@localhost.localdomain Date: Wed, 2 Aug 2006 08:58:06 +0000 (+0100) Subject: [SHADOW] Build p2m mapping according to m2p mapping. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15754^2~14 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=7dcaf7de5f023533592bff28a77f28930f66636d;p=xen.git [SHADOW] Build p2m mapping according to m2p mapping. Signed-off-by: Xin Li Signed-off-by: Yunhong Jiang --- diff --git a/xen/arch/x86/shadow32.c b/xen/arch/x86/shadow32.c index 8dece9d52a..a2c82138c3 100644 --- a/xen/arch/x86/shadow32.c +++ b/xen/arch/x86/shadow32.c @@ -990,18 +990,20 @@ alloc_p2m_table(struct domain *d) list_ent = d->page_list.next; - for ( gpfn = 0; list_ent != &d->page_list; gpfn++ ) + while ( list_ent != &d->page_list ) { page = list_entry(list_ent, struct page_info, list); mfn = page_to_mfn(page); + gpfn = get_gpfn_from_mfn(mfn); + if ( !(error = map_p2m_entry(l1tab, gpfn, mfn)) ) { domain_crash(d); break; } - list_ent = frame_table[mfn].list.next; + list_ent = page->list.next; } unmap_domain_page(l1tab); diff --git a/xen/arch/x86/shadow_public.c b/xen/arch/x86/shadow_public.c index 44833b68bc..9350aa6d72 100644 --- a/xen/arch/x86/shadow_public.c +++ b/xen/arch/x86/shadow_public.c @@ -1617,20 +1617,22 @@ alloc_p2m_table(struct domain *d) list_ent = d->page_list.next; - for ( gpfn = 0; list_ent != &d->page_list; gpfn++ ) + while ( list_ent != &d->page_list ) { struct page_info *page; page = list_entry(list_ent, struct page_info, list); mfn = page_to_mfn(page); + gpfn = get_gpfn_from_mfn(mfn); + if ( !(error = map_p2m_entry(top_tab, gpfn, mfn)) ) { domain_crash(d); break; } - list_ent = frame_table[mfn].list.next; + list_ent = page->list.next; } unmap_domain_page(top_tab);